package com.smart.lib.mapper;

import com.smart.lib.entity.BookInfo;
import com.smart.lib.util.Pager;
import org.apache.ibatis.annotations.Mapper;

import java.awt.print.Book;
import java.util.List;

/**
 * 图书管理方法接口
 * */
@Mapper
public interface BookMapper {
    /**
     * 添加图书
     * */
    public Integer addBook(BookInfo bookInfo);

    /**
     * 编辑图书信息
     * */
    public Integer editBook(BookInfo bookInfo);

    /**
     * 图书分页+搜索
     * */
    public List<BookInfo> getBookInfoPagerBySearch(Pager pager);

    /**
     * 图书分页总数+搜索
     * */
    public Integer getBookInfoPagerTotalBySearch(Pager pager);

    /**
     * 图书借阅中通过ISBN码查询图书信息用于借阅和归还
     * */
    public BookInfo getBookInfoByISB(BookInfo bookInfo);

    /**
     * 图书借阅中通过ISBN码查询 关联操作
     * 验证当前用户是否借阅过该书籍
     * */
    public Integer validateBookBorrowStatus(BookInfo bookInfo);

    /**
     * 借阅流程中关联方法
     * 借阅时，判断当前书籍的可借阅数
     * @return 返回可借阅数
     * */
    public Integer getCurrentBookAvailableCopies(BookInfo bookInfo);

    /**
     * 借阅流程关联方法
     * 借阅完成后，修改当前书籍已出借数量
     * @return 返回受影响的行
     * */
    public Integer updateCurrentBookBorrowCopies(BookInfo bookInfo);

    /**
     * 归还流程关联方法
     * 归还时，更新当前书籍的出借数
     * @return 返回受影响的行
     * */
    public Integer updateCurrentBookReturnCopies(BookInfo bookInfo);

    /**
     * 当前图书总数
     * */
    public Integer getBookTotal();


}
